home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Odtwarzacze muzyki / iTunes 7.0.2.16 / iTunesSetup.exe / RCDATA / CABINET / iTunes.msi / Binary.Scripts.vbs < prev    next >
Text File  |  2006-10-30  |  11KB  |  355 lines

  1. ' VBScript source code
  2. Option Explicit
  3.  
  4. ' Launch condition related subroutines-----------------------------------------
  5.  
  6. Sub iTunesLaunchConditions
  7.     PreventDowngrade
  8.     DetectGEARDriverSetDeletion
  9.     CheckUnsupportediPodSoftware
  10. End Sub
  11.  
  12. Function CompareVersions(sVersion1, sVersion2)
  13.     Dim rgExpVersionComponents
  14.     Dim oMatches1, oMatches2
  15.     Dim iVersion1, iVersion2
  16.     Dim i
  17.  
  18.     On Error Resume Next
  19.     Set rgExpVersionComponents = New RegExp
  20.     rgExpVersionComponents.Pattern = "(\d+)\.?"
  21.     rgExpVersionComponents.Global= True
  22.     Set oMatches1 = rgExpVersionComponents.Execute(sVersion1)
  23.     Set oMatches2 = rgExpVersionComponents.Execute(sVersion2)
  24.     i = 0
  25.     Do
  26.         Err.Clear
  27.         iVersion1 = 0
  28.         iVersion2 = 0
  29.         iVersion1 = CInt(oMatches1(i).SubMatches(0))
  30.         iVersion2 = CInt(oMatches2(i).SubMatches(0))
  31.         If iVersion1 < iVersion2 Then
  32.             CompareVersions = -1
  33.             Exit Function
  34.         ElseIf iVersion1 > iVersion2 Then
  35.             CompareVersions = 1
  36.             Exit Function
  37.         End If
  38.         i = i + 1
  39.     Loop While Err.number = 0
  40.     CompareVersions = 0
  41. End Function
  42.  
  43. Sub PreventDowngrade
  44.     Const msiInstallStateAdvertised = 1
  45.     Dim Installer
  46.     Dim RelatedProducts
  47.     Dim UpgradeCode
  48.     Dim ProductCode
  49.     Dim ProductVersion
  50.     Dim ProductVersionMax
  51.     Dim ProductVersionFound
  52.  
  53.     On Error Resume Next
  54.     Set Installer = Session.Installer
  55.     ProductVersion = Session.Property("ProductVersion")
  56.     ProductVersionMax = ""
  57.     UpgradeCode = Session.Property("UpgradeCode")
  58.     Set RelatedProducts = Installer.RelatedProducts(UpgradeCode)
  59.     For Each ProductCode in RelatedProducts
  60.         If Installer.ProductState(ProductCode) = msiInstallStateAdvertised Then
  61.             ProductVersionFound = Installer.ProductInfo(ProductCode, "Version")
  62.         Else
  63.             Err.Clear : ProductVersionFound = Installer.ProductInfo(ProductCode, "VersionString")
  64.             If Err.number <> 0 Then ProductVersionFound = ""
  65.         End If
  66.         If CompareVersions(ProductVersionFound, ProductVersionMax) > 0 Then ProductVersionMax = ProductVersionFound
  67.     Next
  68.     If CompareVersions(ProductVersionMax, ProductVersion) > 0 Then
  69.         Session.Property("BNEWERITUNESISINSTALLED") = "1"
  70.     Else
  71.         Session.Property("BNEWERITUNESISINSTALLED") = ""
  72.     End If
  73. End Sub
  74.  
  75. Sub DetectGEARDriverSetDeletion
  76.     Dim DeleteFlag
  77.  
  78.     On Error Resume Next
  79.     DeleteFlag = Session.Installer.RegistryValue(2,"SYSTEM\CurrentControlSet\Services\GearAspiWDM", "DeleteFlag")
  80.     If Err.number <> 9 Then
  81.         If IsNumeric(DeleteFlag) Then
  82.             Session.Property("GEARASPIWDM_SERVICE_DELETED") = "#" + CStr(DeleteFlag)
  83.         Else
  84.             Session.Property("GEARASPIWDM_SERVICE_DELETED") = DeleteFlag
  85.         End If
  86.     End If
  87. End Sub
  88.  
  89. Sub CheckUnsupportediPodSoftware
  90.     Const msiInstallStateUnknown = -1
  91.  
  92.     If Session.Installer.ProductState("{020700E4-A96B-4769-BA56-2106150F7B98}") <> msiInstallStateUnknown Or _
  93.         Session.Installer.ProductState("{D593BE84-013B-4221-B34C-B3767C408FAC}") <> msiInstallStateUnknown Or _
  94.         Session.Installer.ProductState("{C062DBC7-009D-4D5E-B80E-5829650F7D24}") <> msiInstallStateUnknown Then
  95.         Session.Property("UNSUPPORTEDIPODSOFTWARE") = "1"
  96.     Else
  97.         Session.Property("UNSUPPORTEDIPODSOFTWARE") = ""
  98.     End If
  99. End Sub
  100.  
  101. Sub FindASUInstalled
  102.     Const msiInstallStateAdvertised = 1
  103.     Dim Installer
  104.     Dim RelatedProducts
  105.     Dim UpgradeCode
  106.     Dim ProductCode
  107.     Dim ProductVersionMin
  108.     Dim ProductVersionFound
  109.  
  110.     On Error Resume Next
  111.     Set Installer = Session.Installer
  112.     ProductVersionMin = "1.0.2"
  113.     UpgradeCode = "{58E373E7-C6D5-4691-885F-721D3B317918}"
  114.     Set RelatedProducts = Installer.RelatedProducts(UpgradeCode)
  115.     If RelatedProducts.Count > 0 Then
  116.         Session.Property("ASUWISINSTALLED") = "1"
  117.     Else
  118.         Session.Property("ASUWISINSTALLED") = ""
  119.     End If
  120.     Session.Property("OLDERASUWISINSTALLED") = ""
  121.     For Each ProductCode in RelatedProducts
  122.         If Installer.ProductState(ProductCode) = msiInstallStateAdvertised Then
  123.             ProductVersionFound = Installer.ProductInfo(ProductCode, "Version")
  124.         Else
  125.             Err.Clear : ProductVersionFound = Installer.ProductInfo(ProductCode, "VersionString")
  126.             If Err.number <> 0 Then ProductVersionFound = ""
  127.         End If
  128.         If CompareVersions(ProductVersionFound, ProductVersionMin) < 0 Then
  129.             ProductVersionMin = ProductVersionFound
  130.             Session.Property("OLDERASUWISINSTALLED") = "1"
  131.         End If
  132.     Next
  133. End Sub
  134.  
  135. ' -----------------------------------------------------------------------------
  136.  
  137. Sub CheckRebootNeeded
  138.     Const msiRunModeMaintenance = 2
  139.     Const msiRunModeRebootAtEnd = 6
  140.     Const msiEvaluateConditionTrue = 1
  141.     Dim fReboot
  142.  
  143.     On Error Resume Next
  144.     fReboot = False
  145.     Err.Clear : Session.Installer.RegistryValue 2,"SYSTEM\CurrentControlSet\Services\GearAspiWDM", "Reboot"
  146.     If Err.number <> 9 Then fReboot = True
  147.     Err.Clear : Session.Installer.RegistryValue 2,"SYSTEM\CurrentControlSet\Services\GearAspiWDM", "DeleteFlag"
  148.     If Err.number <> 9 Then fReboot = True
  149.     If Session.EvaluateCondition("VersionNT=500 AND &GEAR>=2") = msiEvaluateConditionTrue Then fReboot = True
  150.     If Session.EvaluateCondition("$EnableAutoPlayRegistry>2") = msiEvaluateConditionTrue Then fReboot = True
  151.     If fReboot Then Session.Mode(msiRunModeRebootAtEnd) = True
  152. End Sub
  153.  
  154. Function WindowsFirewallInitialize(ByRef fwProfile)
  155.     Dim    fwMgr
  156.     Dim    fwPolicy
  157.     Dim    success
  158.  
  159.     ' assume failure
  160.     Set fwProfile = Nothing
  161.     success = False
  162.  
  163.     On Error Resume Next
  164.     Set fwMgr = CreateObject("HNetCfg.FwMgr")
  165.     If IsObject(fwMgr) Then
  166.         Set fwPolicy = fwMgr.LocalPolicy
  167.         Set fwProfile = fwPolicy.CurrentProfile
  168.         success = True
  169.     End If
  170.  
  171.     ' clean up objects
  172.     If IsObject(fwPolicy) Then Set fwPolicy = Nothing
  173.     If IsObject(fwMgr) Then Set fwMgr = Nothing
  174.  
  175.     WindowsFirewallInitialize = success
  176. End Function
  177.  
  178. Function WindowsFirewallAppIsEnabled(fwProfile, appPath, ByRef isEnabled)
  179.     Dim    success
  180.     Dim    tempResult
  181.     Dim    fwApps
  182.     Dim    fwApp
  183.  
  184.     ' assume failure
  185.     success = False
  186.     isEnabled = False
  187.  
  188.     On Error Resume Next
  189.     ' retrieve the authorized application collection
  190.     Set fwApps = fwProfile.AuthorizedApplications
  191.     If IsObject(fwApps) Then
  192.         ' attempt to retrieve the specIfied application
  193.         Set fwApp = fwApps.Item(appPath)
  194.         If Not IsObject(fwApp) Then
  195.             success = True
  196.         ' is the application enabled?
  197.         ElseIf fwApp.Enabled Then 
  198.             isEnabled = True
  199.             success = True
  200.         Else
  201.             success = True
  202.         End If
  203.     End If
  204.  
  205.     ' clean up objects
  206.     If IsObject(fwApp) Then Set fwApp = Nothing
  207.     If IsObject(fwApps) Then Set fwApps = Nothing
  208.     WindowsFirewallAppIsEnabled = success
  209. End Function
  210.  
  211. Function WindowsFirewallAddApp(fwProfile, appPath, appName)
  212.     Dim    success
  213.     Dim    appEnabled
  214.     Dim    fwApps
  215.     Dim    fwApp
  216.  
  217.     ' assume failure
  218.     success = False
  219.     appEnabled = False
  220.  
  221.     On Error Resume Next    
  222.     success = WindowsFirewallAppIsEnabled(fwProfile, appPath, appEnabled)
  223.     If success And Not appEnabled Then
  224.         success = False
  225.         ' retrieve the authorized application collection
  226.         Set fwApps = fwProfile.AuthorizedApplications
  227.         ' create an instance of an authorized application
  228.         Set fwApp = CreateObject("HNetCfg.FwAuthorizedApplication")
  229.         If IsObject(fwApps) And IsObject(fwApp) Then
  230.             Err.Clear
  231.             ' Set the application friendly name
  232.             fwApp.Name = appName
  233.             ' Set the process image file name
  234.             fwApp.ProcessImageFileName = appPath
  235.             If Err.number = 0 Then
  236.                 ' add the application to the collection
  237.                 fwApps.Add(fwApp)
  238.                 If Err.number = 0 Then success = True
  239.             End If
  240.         End If
  241.     End If
  242.  
  243.     ' clean up objects
  244.     If IsObject(fwApp) Then    Set fwApp = Nothing
  245.     If IsObject(fwApps) Then Set fwApps = Nothing
  246.  
  247.     WindowsFirewallAddApp = success
  248. End Function
  249.  
  250. Function WindowsFirewallRemoveApp(fwProfile, appPath)
  251.     Dim    success
  252.     Dim    tempResult
  253.     Dim    fwApps
  254.  
  255.     ' assume failure
  256.     success = False
  257.  
  258.     On Error Resume Next
  259.     ' retrieve the authorized application collection
  260.     Set fwApps = fwProfile.AuthorizedApplications
  261.  
  262.     If IsObject(fwApps) Then
  263.         Err.Clear
  264.         ' attempt to remove the specIfied application
  265.         fwApps.Remove appPath
  266.         If Err.number = 0 Then success = True
  267.     End If
  268.  
  269.     ' clean up object
  270.     If IsObject(fwApps) Then Set fwApps = Nothing
  271.  
  272.     WindowsFirewallRemoveApp = success
  273. End Function
  274.  
  275. Sub AddiTunesToWindowsFirewall
  276.     Dim fwProfile
  277.     Dim PathToiTunesExe
  278.  
  279.     WindowsFirewallInitialize fwProfile
  280.     If IsObject(fwProfile) Then
  281.         PathToiTunesExe = Session.Property("CustomActionData")
  282.         WindowsFirewallRemoveApp fwProfile, PathToiTunesExe
  283.         WindowsFirewallAddApp fwProfile, PathToiTunesExe, "iTunes"
  284.         Set fwProfile = Nothing
  285.     End If
  286. End Sub
  287.  
  288. Sub RemoveiTunesFromWindowsFirewall
  289.     Dim fwProfile
  290.     Dim PathToiTunesExe
  291.  
  292.     WindowsFirewallInitialize fwProfile
  293.     If IsObject(fwProfile) Then
  294.         PathToiTunesExe = Session.Property("CustomActionData")
  295.         WindowsFirewallRemoveApp fwProfile, PathToiTunesExe
  296.         Set fwProfile = Nothing
  297.     End If
  298. End Sub
  299.  
  300. Sub InitInstallOptionsCheckboxes
  301.     Const msiEvaluateConditionTrue = 1
  302.  
  303.     If Session.EvaluateCondition("DESKTOP_SHORTCUTS=""1""") = msiEvaluateConditionTrue Then Session.Property("ChkOptShortcuts") = "1"
  304.     If Session.EvaluateCondition("MEDIA_DEFAULTS=""1""") = msiEvaluateConditionTrue Then Session.Property("ChkOptDefPlayer") = "1"
  305.     Session.Property("ChkOptInstASU") = "1"
  306. End Sub
  307.  
  308. Sub InitFinishCheckbox
  309.     Const msiRunModeRebootAtEnd = 6
  310.     Const msiEvaluateConditionTrue = 1
  311.  
  312.     If Not Session.Mode(msiRunModeRebootAtEnd) Then 
  313.         Session.Property("ChkOptLaunchiTunes") = "1"
  314.         Session.Property("ShowChkOptLaunchiTunes") = "1"
  315.     Else
  316.         Session.Property("ChkOptLaunchiTunes") = ""
  317.         Session.Property("ShowChkOptLaunchiTunes") = ""
  318.     End If
  319. End Sub
  320.  
  321. Sub TerminateiTunesProcesses
  322.     Session.Property("TerminateProcessName") = "iTunesHelper"
  323.     Session.DoAction "TerminateProcessAction"
  324. End Sub
  325.  
  326. Sub AddDesktopShortcuts
  327.     Const msiViewModifyInsertTemporary = 7
  328.     Const msidbRemoveFileInstallModeOnRemove = 2
  329.     Dim View
  330.     Dim Record
  331.  
  332.     Set View = Session.Database.OpenView("SELECT `Shortcut`, `Directory_`, `Name`, `Component_`, `Target`, `Arguments`, `Description`, `Hotkey`, `Icon_`, `IconIndex`, `ShowCmd`, `WkDir` FROM `Shortcut`")
  333.     View.Execute
  334.     Set Record = Session.Installer.CreateRecord(12)
  335.     Record.StringData(1) = "iTunes_Desktop"
  336.     Record.StringData(2) = "DesktopFolder"
  337.     Record.StringData(3) = "iTunes"
  338.     Record.StringData(4) = "iTunes.exe"
  339.     Record.StringData(5) = "iTunes"
  340.     Record.StringData(9) = "iTunesIco.exe"
  341.     Record.IntegerData(10) = 0
  342.     Record.IntegerData(11) = 1
  343.  
  344.     View.Modify msiViewModifyInsertTemporary, Record
  345.  
  346.     Record.StringData(1) = "iTunes_QuickLaunch"
  347.     Record.StringData(2) = "QuickLaunchFolder"
  348.  
  349.     View.Modify msiViewModifyInsertTemporary, Record
  350.  
  351.     View.Close
  352.     Set Record = Nothing
  353.     Set View = Nothing
  354. End Sub
  355.